// Person.h
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
    Person() {}
    ~Person() {}
    void eat() { cout << "Person::eat()\n"; }
public:     // 基类 public 属性数据成员
    float height;
protected:  // 基类 protected 属性数据成员
    string name;
private:    // 基类 private 属性数据成员
    int age;
};

class Student : public Person // 公有继承
{
public:
    Student() {
        // 验证公有继承方式
        // 派生类中可以访问基类公有成员和保护成员可以访问，私有成员不可访问
        // 派生类中
        height = 175;
        name = "lanqiao";
        // age = 18;
    }
    ~Student() {}
    void eat() { cout << "Student::eat()\n"; }
};

void tempFunc(Person p)
{
    p.eat();
}

void tempFunc_ref(Person &p)
{
    p.eat();
}

void tempFunc_p(Person *p)
{
    p->eat();
}

int main()
{
    Student stu;
    Person per;
    tempFunc(stu);
    tempFunc(per);
    tempFunc_ref(stu);
    tempFunc_ref(per);
    tempFunc_p(&stu);
    tempFunc_p(&per);
    return 0;
}